package com.cyl.manager.vip.domain.entity;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * VIP自动续费对象 vip_auto_renew
 *
 * @author system
 * @date 2024-01-20
 */
@Data
public class VipAutoRenew extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自动续费ID */
    private Long id;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** VIP配置ID */
    @Excel(name = "VIP配置ID")
    private Long rechargeDataId;

    /** 原始订单号 */
    @Excel(name = "原始订单号")
    private String originalOrderSn;

    /** 支付方式（1：支付宝，2：微信） */
    @Excel(name = "支付方式", readConverterExp = "1=支付宝,2=微信")
    private Integer payType;

    /** 续费金额 */
    @Excel(name = "续费金额")
    private BigDecimal amount;

    /** VIP天数 */
    @Excel(name = "VIP天数")
    private Integer vipDays;

    /** 下次续费时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "下次续费时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime nextRenewTime;

    /** 状态（0：禁用，1：启用，2：已取消） */
    @Excel(name = "状态", readConverterExp = "0=禁用,1=启用,2=已取消")
    private Integer status;

    /** 重试次数 */
    @Excel(name = "重试次数")
    private Integer retryCount;

    /** 最大重试次数 */
    @Excel(name = "最大重试次数")
    private Integer maxRetryCount;

    /** 最后续费时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后续费时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastRenewTime;

    /** 最后续费订单号 */
    @Excel(name = "最后续费订单号")
    private String lastRenewOrderSn;

    /** 失败原因 */
    @Excel(name = "失败原因")
    private String failureReason;

    /** 微信签约协议号 */
    @Excel(name = "微信签约协议号")
    private String wechatContractId;

    /** 商户侧签约协议号 */
    @Excel(name = "商户侧签约协议号")
    private String contractCode;

    /** 签约状态（0：未签约，1：已签约，2：签约失败，3：已解约） */
    @Excel(name = "签约状态", readConverterExp = "0=未签约,1=已签约,2=签约失败,3=已解约")
    private Integer contractStatus;

    /** 签约时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "签约时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime contractTime;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

}
